import tagApi from "@rc/apis/rc/tag.mjs";

export default {
	async created() {
		const storageData = localStorage.getItem(this.localStorageKey);
		if (!storageData) {
			this.$message.error("缓存中缺少需要的试题信息");
			return;
		}
		const storageParseData = JSON.parse(storageData);
		if (!storageParseData.length) {
			return;
		}
		if (this.pageType === "edit") {
			this.subjectId = storageParseData[0].subjectId;
			this.subjectName = storageParseData[0].subjectName;
			this.projectName = storageParseData[0].projectName;
			// 查询标签下拉数据
			await new Promise((rs) => {
				tagApi.getResourceLabels({
					data: {
						applyScope: "Q", // 试题类型
						labelType: "S" // 系统标签
					},
					success: (data) => {
						this.tagOptions = data;
						rs();
					}
				});
			});
		}
		// 对初始数据遍历，并入一些识别和属性信息，便于使用
		if (this.dataGetType === "localStorageAll") {
			// 全部数据本地缓存类型
			this.questionAllList = storageParseData.map((item1) => ({
				...item1,
				questionTypeDataList: item1.questionTypeDataList.map((item2, index2) => ({
					...item2,
					questionType: item1.questionType,
					navId: item1.questionType + "-" + index2, // 无论大题还是小题，用于页面导航定位的唯一id
					parentNavId: item1.questionType + "-" + index2, // 所属的大题的唯一id
					navSeq: index2 + 1, // 导航展示题号
					smallQuestionList: (item2.smallQuestionList || []).map((item3, index3) => ({
						...item3,
						navId: item1.questionType + "-" + index2 + "-" + index3, // 无论大题还是小题，用于页面导航定位的唯一id
						parentNavId: item1.questionType + "-" + index2, // 所属的大题的唯一id
						navSeq: index2 + 1 + "-" + (index3 + 1) // 导航展示题号
					}))
				}))
			}));
		} else {
			// 本地只有id的类型
			this.questionAllList = storageParseData.map((item1) => ({
				questionType: item1.questionType,
				questionTypeDataList: item1.questionList.map((item2, index2) => ({
					resourceId: item2.resourceId,
					questionType: item1.questionType,
					navId: item1.questionType + "-" + index2, // 无论大题还是小题，用于页面导航定位的唯一id
					parentNavId: item1.questionType + "-" + index2, // 所属的大题的唯一id
					navSeq: index2 + 1, // 导航展示题号
					smallQuestionList: (item2.resourceIdList || []).map((item3, index3) => ({
						resourceId: item3,
						navId: item1.questionType + "-" + index2 + "-" + index3, // 无论大题还是小题，用于页面导航定位的唯一id
						parentNavId: item1.questionType + "-" + index2, // 所属的大题的唯一id
						navSeq: index2 + 1 + "-" + (index3 + 1) // 导航展示题号
					}))
				}))
			}));
		}

		// 基础数据处理完成,组装需要的各种格式的数据

		// 试题扁平化数据(分页是以大题为标识，每一个大题认为是一条数据)
		this.questionAllList.forEach((item1) => {
			item1.questionTypeDataList.forEach((item2) => {
				this.flatQuestionAllList.push(item2);
			});
		});

		this.page.pageCount = this.flatQuestionAllList.length;

		// 试题导航数据
		this.questionNavList = this.questionAllList.map((item1) => ({
			...item1,
			questionTypeDataList: item1.questionTypeDataList.reduce((result, item2) => {
				// 如果是复合题，导航上不展示父题题号，只展示子级题号
				let arr = [];
				if (["A", "CF", "L", "C"].includes(item2.questionType)) {
					arr = item2.smallQuestionList.map((i) => ({ ...i, isChecked: false, isComplete: false }));
				} else {
					arr = [{ ...item2, isChecked: false, isComplete: false }];
				}
				return [...result, ...arr];
			}, [])
		}));
		// 初始化数据准备完成，首次加载展示试题列表
		await this.updateQuestionShowList();
		this.$nextTick(() => {
			this.computeActiveType();
		});
	}
};
